/**
 * 
 */
package br.com.io.beans;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;

import br.com.io.dao.ClienteDao;
import br.com.io.dao.OcorrenciaDao;
import br.com.io.modelo.Cliente;
import br.com.io.modelo.Ocorrencia;
import br.com.io.modelo.Usuario;

/**
 * @author Lincoln
 *
 */
@ManagedBean
@SessionScoped
@Named
public class OcorrenciaBeans implements Serializable{
	
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
private Session session;
	
		
	private List<Ocorrencia> listOco;
	
	private List<Ocorrencia> listOcoNome;
	
	public OcorrenciaBeans(){
		
	}
	

public List<Ocorrencia> getListOco() {
		return listOco;
	}


public List<Ocorrencia> getListOcoNome() {
	 Criteria c = getSession().createCriteria(Ocorrencia.class);
     // c.add(Restrictions.ilike("ocorrencia", ocorrencia));
      return listOcoNome = c.list();
	
}




public void setListOcoNome(List<Ocorrencia> listOcoNome) {
	this.listOcoNome = listOcoNome;
}




public Session getSession() {
	return session;
}




public void setSession(Session session) {
	this.session = session;
}



public List<Ocorrencia> buscaTodosClientes(){
	 Configuration configuration = new AnnotationConfiguration();
	    configuration.configure();
	    SessionFactory sf = configuration.buildSessionFactory();
	    Session s = sf.openSession();
    Criteria c = s.createCriteria(Ocorrencia.class);
   // c.add(Restrictions.ilike("nomeCli", nome));
    System.out.println("Testando a busca");
    return  c.list();
}


public List<Ocorrencia> buscaClientes(String nome){
    Criteria c = getSession().createCriteria(Cliente.class);
    c.add(Restrictions.ilike("nomeCli", nome));
    return c.list();
}


	
public String salva(Ocorrencia oco){
	
	//Configuration configuration = new AnnotationConfiguration();
  //  configuration.configure();
   //  SessionFactory sf = configuration.buildSessionFactory();
   // Session s = sf.openSession();
    
   // Session s1 = sf.openSession();
    
   // Session s2 = sf.openSession();
	
	// s.beginTransaction();
	 
	// OcorrenciaDao dao = new OcorrenciaDao(s);
	// Cliente cli = (Cliente) s1.load(Cliente.class, 1l);
	// Usuario usuario= (Usuario) s2.load(Usuario.class, 1l);
	
	//oco.setOcorrencia("Teste Hj");
	 
	
	// oco.setCliente(cli);
	// oco.setUsuario(usuario);
		//s.save(oco);
	//	dao.salva(cli);
		
		//s.getTransaction().commit();
		
		//s.close();
	
	 System.out.println("Teste Adiciona!");
	 
		
	 Configuration configuration = new AnnotationConfiguration();
	   configuration.configure();
	     SessionFactory sf = configuration.buildSessionFactory();
	   Session s = sf.openSession();
	   System.out.println("Teste Adiciona!");
	   OcorrenciaDao dao = new OcorrenciaDao(s);
	   Ocorrencia oco1 = new Ocorrencia();
	  
	    s.beginTransaction();
		dao.salva(oco1);
		s.getTransaction().commit();
		
		s.close();
	System.out.println("Teste Add"+oco1.getDescricaoOcorrencia());
	return "ok";
	    
	}
	
	public void remove(Ocorrencia oco){
		
		this.session.delete(oco);
		
	}
	
	public Ocorrencia procura(Long id){
		
		return(Ocorrencia) this.session.load(Ocorrencia.class, id);
	}
	
	public void atualiza(Ocorrencia oco){
		this.session.update(oco);
	}
	
	public List<Ocorrencia> listaTudo(){
		
		return this.session.createCriteria(Ocorrencia.class).list();
		
	}
	
	public List<Ocorrencia> pagina (int inicio, int quantia){
		
		return this.session.createCriteria(Ocorrencia.class).setMaxResults(quantia).setFirstResult(inicio).list();
	}
	
	
	public List<Ocorrencia> precoMaiorQue(double preco){
		
		Query query = this.session.createQuery("from Produto where preco > :preco");
			
			query.setDouble("preco", preco);
			return query.list();
	}

	public String verificaUsuario(){
		System.out.println("test Lincoln");
		return null;
	}
	
}
